home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
A.C.E. 2
/
ACE CD 2.iso
/
FILES
/
UTILS
/
AMOSPRO1.DMS
/
in.adf
/
Install.AMOS
/
Install.amosSourceCode
< prev
Encoding:
Amiga
Atari
Commodore
DOS
FM Towns/JPY
Macintosh
Macintosh JP
Macintosh to JP
NeXTSTEP
RISC OS/Acorn
Shift JIS
UTF-8
Wrap
AMOS Source Code
|
1993-03-31
|
34.7 KB
|
1,425 lines
' AMOS Professional Installer
'
' By Fran�ois Lionet / Intro by Peter Hickman
'
' (c) 1992 Europress Software Ltd.
Set Buffer 32
Global QUIT,VER$
Global MXSIZE,AKEY
Global C0,C1,C2,C3
Global NAMEF$,NAMES$,REG$,USER$
Global DB$,AL$
Global QUIT,DRV$,DRV,SYS$,DFONT$,DLIB$,DS$
Global BCOPY,BIFOLDER
Global XLOAD,YLOAD,XSAVE,YSAVE,XINFO,YINFO
Global XSLI,YSLI,SXSLI,SYSLI,MSLI
Dim F$(200),SZ(200),DR$(200)
Dim S(10),I(10),ND$(10),NDD$(10),NF(10)
Global F$(),SZ(),NFILE,PATH$,LFILE
Global DR$(),NDIR,ERR,NF()
Global ND$(),PTICON$
Close Workbench
Close Editor
Set Sprite Buffer 40
LFILE=40 : Set Dir LFILE,""
Request Off
Break Off
BCOPY=17 : MXSIZE=64*1024
BIFOLDER=18
C0=6 : C1=3 : C2=7
' Names, sizes and number of files of the different discs
ND$(0)="AMOSPro_System:" : S(0)=459754 : NF(0)=79+17
ND$(1)="AMOSPro_Tutorial:" : S(1)=747509 : NF(1)=68+9
ND$(2)="AMOSPro_Examples:" : S(2)=758962 : NF(2)=97+14
ND$(3)="AMOSPro_Productivity1:" : S(3)=810316 : NF(3)=17+2
ND$(4)="AMOSPro_Productivity2:" : S(4)=698844 : NF(4)=88+18
ND$(5)="AMOSPro_Accessories:" : S(5)=820401 : NF(5)=16+2
' Names of the directories to create
NDD$(1)="Tutorial"
NDD$(2)="Examples"
NDD$(3)="Productivity1"
NDD$(4)="Productivity2"
NDD$(5)="Accessories"
' Directory created as default
DDIR$="AMOS_Pro"
' Different keymaps names
NKY=12
Dim KYN$(NKY),KY$(NKY)
Global KY,KY$()
KYN$(0)=" English " : KY$(0)="gb"
KYN$(1)=" American " : KY$(1)="usa1"
KYN$(2)=" Fran�ais " : KY$(2)="f"
KYN$(3)=" Deutsch " : KY$(3)="d"
KYN$(4)=" Dansk " : KY$(4)="dk"
KYN$(5)=" Norsk " : KY$(5)="n"
KYN$(6)=" Svenskt " : KY$(6)="s"
KYN$(7)=" Suisse " : KY$(7)="ch1"
KYN$(8)=" Canadien " : KY$(8)="cdn"
KYN$(9)=" Schweiz " : KY$(9)="ch2"
KYN$(10)=" Italiana " : KY$(10)="i"
KYN$(11)=" Espanol " : KY$(11)="e"
KYN$(12)=" Portugues " : KY$(12)="po"
VER$="1.01"
' Machine langage
Global DBANK
DBANK=8
' Memory check
If Chip Free+Fast Free<256*1024 : _PANIC[0] : End If
' Welcome animation
_EXPLOSION : E=Param
If E=0
Trap Load ND$(0)+"APSystem/AMOSPro_Editor_Samples.Abk",5
Trap Sam Play 3,1
Wait 100
Erase All
End If
' Data loading
Trap Reserve As Work BCOPY,MXSIZE
If Errtrap : _PANIC[0] : End If
Trap Load ND$(0)+"Install_Data/Inst_Asm.Abk",DBANK
If Errtrap : _PANIC[1] : End If
Trap Load ND$(0)+"Install_Data/Inst_Resource.Abk",16
If Errtrap : _PANIC[1] : End If
Trap Load ND$(0)+"Install_Data/Inst_Icon.Abk",BIFOLDER
If Errtrap : _PANIC[1] : End If
Resource Bank 16
' Press a key
If E=0
Screen Open 0,640,8,2,Hires : Palette 0,0 : Curs Off
Screen Display 0,,252,,
Centre "Press any key."
Fade 4,0,$FFF
Repeat
Multi Wait
Exit If Inkey$<>""
Until Mouse Key
Fade 2 : Wait 16*2
Trap Screen 6
Fade 4 : Wait 4*16
_SCREEN_CLOSALL
End If
INIT_SCREEN
Screen Clone 1 : Screen Hide 1
Screen 0 : Palette 0,0,0,0,0,0,0,0
Fade 3 To 1
Show On
' Ask for keyboard langage
Vdialog$(1,0)=Array(KYN$(0))
Vdialog(1,1)=NKY
R=Dialog Run(1,7)
Screen Close 1
If R<>1 : _ABORTED : End If
KY=Rdialog(1,1)
' Changes keyboard langage
R=Dialog Run(1,10)
_GET_DISC[ND$(0),Resource$(91)]
Trap Exec "SetMap "+KY$(KY)
Trap Exec "SetMap "+KY$(KY)
' Proceed with installation
_CHECK_INSTALLATION
' Install Startup-sequence
Do
Repeat
_ADAPT_CONFIG : E=Param : Exit If E
Trap Open Out 1,DRV$+"s/Startup-Sequence" : If Errtrap : E=1 : Exit : End If
Trap Print #1,"SetMap "+KY$(KY);Chr$(10);
Trap Print #1,"Run >Nil: AMOSPro";Chr$(10);
Trap Print #1,"EndCli";Chr$(10); : If Errtrap : E=3 : Exit : End If
Close
Exit If E=0,2
Until E
' Gestion des erreurs
Close : _BELL
R=Dialog Box(AL$,2,Resource$(96+E))
If R=2
R=Dialog Run(1,2)
If R=2 : _QUIT : End If
End If
Loop
' Registration number
Vdialog$(1,0)=NAMEF$
Vdialog$(1,1)=REG$
R=Dialog Run(1,3)
' First installation page
R=Dialog Run(1,4)
For S=0 To 5 : Vdialog(1,4+S)=S(S) : Vdialog(1,10+S)=1 : Next
' Free space on the system disc
Do
' File selector
Do
Trap F$=Fsel$("","",Resource$(63),Resource$(64))
If Errtrap : E=1 : Exit : End If
PTH$=Dir$ : D$=Upper$(Dir$)
If Exist(D$)=0 or(Left$(D$,2)="DF") and(Mid$(D$,4,1)=":")
R=Dialog Box(AL$,2,Resource$(66))
If R=2 : _ABORTED : End If
Else
If(Left$(D$,4)="RAM:") or(Left$(D$,4)="RAD:")
FRI=Chip Free+Fast Free : Exit
Else
FRI=Dfree
End If
Exit
End If
Loop
D$=Dir$
For D=1 To Len(D$)
Exit If Mid$(D$,D,1)=":"
Next
D$=Left$(D$,Min(D,24))
' Choice page
Do
Vdialog$(1,0)=Right$(Dir$,56)
Vdialog$(1,2)=Resource$(108)+Chr$(34)+D$+Chr$(34)
Vdialog(1,3)=FRI
R=Dialog Run(1,5)
Repeat
TS=0
For S=0 To 5
I(S)=0
If Vdialog(1,10+S) : Add TS,S(S) : Inc I(S) : End If : Next
Ink 7,6 : X=Vdialog(1,0) : Y=Vdialog(1,1)
Cls 6,X,Y To X+64,Y+8 : Text X-8,Y+6,Str$(TS)
Repeat
Multi Wait
R=Dialog(1)
Until R
If R=2 : _ABORTED : End If
Exit If R=3,2
Until R=1
If TS>=FRI
R=Dialog Box(AL$,2,Resource$(65))
If R=2 : _ABORTED : End If
Else If TS=0
R=Dialog Box(AL$,2,Resource$(113))
If R=2 : _ABORTED : End If
Else
If I(0) and SYSF=0
' Free space on the system disc
Repeat
SYSF=0
SYS$="Sys:"
DFONT$="Fonts:"
DLIB$="Libs:"
DS$="S:"
_GET_DISC[ND$(0),Resource$(91)]
Trap Dir$=DRV$
If Errtrap=0
Trap S=Dfree
Trap Dir$="Sys:"
If Errtrap=0
Trap SS=Dfree
If S<>SS
SYSF=SS
Else
Trap F$=Fsel$("","",Resource$(81),Resource$(82))
Trap SS=Dfree
If Errtrap=0
If S<>SS
SYSF=SS
SYS$=Dir$
DFONT$=SYS$+"Fonts/"
DLIB$=SYS$+"Libs/"
DS$=SYS$+"S/"
End If
End If
End If
End If
End If
If SYSF=0
_BELL : R=Dialog Box(AL$,2,Resource$(83))
If R=2 : _ABORTED : End If
End If
Until SYSF>0
If SYSF<128*1024
R=Dialog Box(AL$,2,Resource$(79))
If R=2 : _ABORTED : End If
End If
End If
Exit 2
End If
Loop
Loop
' Main directory
_MKDIR[PTH$+DDIR$,1] : E=Param
If E
R=Dialog Box(AL$,2,Resource$(73))
If R=2 : _ABORTED : End If
End If
PTH$=PTH$+DDIR$+"/"
PTICON$=PTH$+"AMOSPro"
' Different directories
For D=0 To 5
If I(D)
Repeat
_GET_DISC[ND$(D),Resource$(91+D)]
If D
_COPY_DISC[Resource$(91+D),DRV$,PTH$,NDD$(D),S(D),NF(D)]
Else
_COPY_DISC[Resource$(91),DRV$,PTH$,"",S(D),NF(D)]
End If
E=Param
If E<0 : _ABORTED : End If
If E=1
R=Dialog Box(AL$,2,Resource$(68))
If R=2 : _ABORTED : End If
End If
If E=2
R=Dialog Box(AL$,2,Resource$(73))
If R=2 : _ABORTED : End If
End If
Until E=0
End If
Next
' Last installation page
Vdialog$(1,0)=Right$(PTH$,70)
R=Dialog Run(1,6)
' Check any disc in drive
Repeat
F=0
For D=0 To 2
D$="Df"+Chr$(48+D)+":"
If Exist(D$)
R=Dialog Box(AL$,1,Resource$(62)+D$)
Inc F
End If
Next
Until F=0
_QUIT
Procedure _ADAPT_CONFIG
HIMEM=(Chip Free+Fast Free)>768*1024
'>>> Changes in Interpreter_Config
Trap Open In 1,DRV$+"s/AMOSPro_Interpreter_Config"
If Errtrap : Pop Proc[2] : End If
L=Lof(1)
Trap Sload 1 To Start(BCOPY),L
If Errtrap : Pop Proc[2] : End If
Close
A=Start(BCOPY)+8
' Auto-close workbench?
Poke A+36,1 : Poke A+37,1 : If HIMEM : Poke A+36,0 : Poke A+37,0 : End If
' Kill-editor effective?
Poke A+39,1 : If HIMEM : Poke A+39,0 : End If
Trap Bsave DRV$+"s/AMOSPro_Interpreter_Config",Start(BCOPY) To Start(BCOPY)+L
If Errtrap : Pop Proc[1] : End If
'>>> Changes in Editor_Config
Trap Open In 1,DRV$+"APSystem/AMOSPro_Editor_Config"
If Errtrap : Pop Proc[2] : End If
L=Lof(1)
Trap Sload 1 To Start(BCOPY),L
If Errtrap : Pop Proc[2] : End If
Close
A=Start(BCOPY)+4
' NTSC
Doke A+2,256 : If Ntsc : Doke A+2,200 : End If
' UNDO Length
Loke A+14,1024*4 : Loke A+18,100
If HIMEM
Loke A+14,1024*32 : Loke A+18,500
End If
' Programs hidden or not
For P=A+434 To A+434+9*3 Step 3
If Peek(P) : Poke P,%10 : End If
Next
If HIMEM
For P=A+434 To A+434+9*3 Step 3
If Peek(P) : Poke P,%1 : End If
Next
End If
Trap Bsave DRV$+"APSystem/AMOSPro_Editor_Config",Start(BCOPY) To Start(BCOPY)+L
If Errtrap : Pop Proc[1] : End If
End Proc[0]
Procedure _COPY_DISC[N$,SRCE$,DEST$,FOLD$,SIZE,NUM]
VACT$="1"
Vdialog$(1,0)=N$
R=Dialog Run(1,9)
XINFO=2 : YINFO=Vdialog(1,4)/8+2
XLOAD=XINFO : YLOAD=YINFO+2
XSAVE=XINFO : YSAVE=YLOAD+1
XSLI=Vdialog(1,0)+2 : YSLI=Vdialog(1,1)+1
SXSLI=Vdialog(1,2)-5 : SYSLI=Vdialog(1,3)-3
Paper C0
_GET_ALL[SRCE$,NUM] : If Param : Pop Proc[Param] : End If
Pen C2 : Print At(XINFO,YINFO)+Resource$(112)+Resource$(111)
_MKDIR[DEST$+FOLD$,1] : If Param : Pop Proc[Param] : End If
If FOLD$<>"" : FOLD$=FOLD$+"/" : End If
_INIT_SLIDER[NFILE,C0,4]
For N=0 To NDIR-1
If Dialog(1) : Pop Proc[-1] : End If
N$=DR$(N) : Gosub _FILTER
If F
If Instr(N$,"/")
For C=Len(N$) To 1 Step -1
Exit If Mid$(N$,C,1)="/"
Next
P$=Left$(N$,C-1)
_MKDIR[P$,0] : If Param : Pop Proc[Param] : End If
End If
End If
Next
For NF=0 To NFILE-1
If Dialog(1) : Pop Proc[-1] : End If
LF=SZ(NF) : N$=F$(NF) : Gosub _FILTER
If F
_COPY_FILE[SRCE$+F$(NF),N$,SZ(NF)]
If Param : Pop Proc[Param] : End If
End If
_SLIDER[NF]
Next
_SLIDER[MSLI]
Pop Proc[0]
_FILTER:
X=Free : F=0 : Restore DTS
Do
Read S1$,S2$,S3$,S4$ : Exit If S1$=""
U$=Upper$(N$)
A$=Left$(S1$,1) : B$=Left$(S2$,1)
S1$=Mid$(S1$,2) : S2$=Mid$(S2$,2)
FF=0
If A$="<" : If Left$(U$,Len(S1$))=S1$ : FF=-1 : End If : End If
If A$=">" : If Right$(U$,Len(S1$))=S1$ : FF=-1 : End If : End If
If A$=" " : If U$=S1$ : FF=-1 : End If : End If
If A$="*" : FF=-1 : End If
If FF
FF=0
If B$="<" : If VACT$<S2$ : FF=-1 : End If : End If
If B$=">" : If VACT$>S2$ : FF=-1 : End If : End If
If FF
N$=Mid$(N$,Len(S3$)+1)
N$=S4$+N$ : F=-1
End If
Exit
End If
Loop
Return
DTS:
Data ">AMOSPRO_INTERPRETER_CONFIG",">0","S/",DS$
Data ">AMOS.LIBRARY",">0","LIBS/",DLIB$
Data ">INSTALL.AMOS",">9","",""
Data ">INSTALL.AMOS.INFO",">9","",""
Data "<INSTALL_DATA",">9","",""
Data " .INFO",">9","",""
Data " DISK.INFO",">9","",""
Data "<C/",">9","",""
Data "<S/",">9","",""
Data "<LIBS/",">9","",""
Data "<L/",">9","",""
Data "<DEVS/",">9","",""
Data "<FONTS/",">0","FONTS/",DFONT$
Data "*",">0","",DEST$+FOLD$
Data "","","",""
End Proc
Procedure _COPY_FILE[S$,D$,LF]
Trap Open In 1,S$ : If Errtrap : Pop Proc[1] : End If
Trap Open Out 2,D$ : If Errtrap : Pop Proc[2] : End If
If LF=0 : LF=Lof(1) : End If
Pen C1
Repeat
Print At(XLOAD,YLOAD);Resource$(49)+Right$(S$,60)
L=Min(LF,Length(BCOPY))
Trap Sload 1 To Start(BCOPY),L : If Errtrap : Pop Proc[1] : End If
Print At(XLOAD,YLOAD);Space$(78-XLOAD)
' If icon, changes the path to AMOSPro
If Right$(S$,5)=".info"
Loke Start(BCOPY)+$3A,$80000000
Loke Start(BCOPY)+$3E,$80000000
'A$=Upper$(S$)
'If(Right$(A$,10)=".AMOS.INFO") or(Right$(A$,13)="DEF_ICON.INFO")
' H=Hunt(Start(BCOPY) To Start(BCOPY)+LF,":AMOS")
' If H
' OL=Peek(H-1) : N$=PTICON$+Chr$(0) : L=Len(N$)
' Poke H-1,L : Poke$ H,N$
' LF=LF-OL+L : L=LF
' End If
'End If
End If
Print At(XSAVE,YSAVE);Resource$(50)+Right$(D$,66)
Trap Ssave 2,Start(BCOPY) To Start(BCOPY)+L : If Errtrap : Pop Proc[2] : End If
Wait 5 : Print At(XSAVE,YSAVE);Space$(78-XSAVE)
LF=LF-L
Until LF<=0
Close
Pop Proc[0]
End Proc
Procedure _GET_ALL[F$,N]
_INIT_SLIDER[N,C0,4]
Pen C2 : Print At(XINFO,YINFO)+Resource$(112)+Resource$(110)
For N=0 To NFILE : F$(NFILE)="" : Next
For N=0 To NDIR : DR$(NFILE)="" : Next
PATH$=F$ : NDIR=0 : NFILE=0 : ERR=0 : _GET_FILES[F$]
Print At(XINFO,YINFO)+Space$(78-XINFO)
If ERR=0 : _SLIDER[MSLI] : End If
End Proc[ERR]
Procedure _GET_FILES[F$]
Dim D$(50)
On Error Proc DERR
Resume Label EERR
If ERR=0
A$=Dir First$(F$+"**")
While A$<>""
If Dialog(1) : ERR=-1 : End If
If Left$(A$,1)="*"
D$(NDOS)=(Mid$(A$,2,LFILE)-" ")+"/"
DR$(NDIR)=(F$+D$(NDOS))-PATH$
Inc NDOS : Inc NDIR
Else
SZ(NFILE)=Val(Mid$(A$,LFILE))
F$(NFILE)=(F$+Left$(A$,LFILE)-" ")-PATH$
Inc NFILE
End If
_SLIDER[NFILE+NDIR]
A$=Dir Next$
Wend
If NDOS
For N=0 To NDOS-1
_GET_FILES[F$+D$(N)]
Next
End If
End If
EERR:
End Proc
Procedure DERR
ERR=1 : NFILE=0 : NDIR=0 : Resume Label
End Proc
Procedure _MKDIR[D$,I]
If Exist(D$)=0
Trap Mkdir D$
If Errtrap : Pop Proc[2] : End If
If I
Loke Start(BIFOLDER)+$3A,$80000000
Loke Start(BIFOLDER)+$3E,$80000000
Trap Bsave D$+".info",Start(BIFOLDER) To Start(BIFOLDER)+Length(BIFOLDER)
If Errtrap : Pop Proc[2] : End If
End If
End If
End Proc[0]
Procedure _INIT_SLIDER[M,A,B]
Set Slider A,A,A,0,B,B,B,0
MSLI=M : _SLIDER[0]
End Proc
Procedure _SLIDER[P]
P=Min(P,MSLI)
Hslider XSLI,YSLI To XSLI+SXSLI,YSLI+SYSLI,MSLI,0,P
End Proc
Procedure INIT_SCREEN
Restore DBL
Repeat
Read A$ : DB$=DB$+A$
Until A$=""
Restore ALT
Repeat
Read A$ : AL$=AL$+A$
Until A$=""
Resource Bank 16
Resource Screen Open 0,640,200,0
Curs Off : Flash Off : Cls 0
Wait Vbl
Limit Mouse X Hard(0),Y Hard(0) To X Hard(Screen Width),Y Hard(Screen Height)
On Error Goto ERR
Paper 0 : Pen 1
Dialog Open 1,DB$,48 : DB$=""
Pop Proc
ERR: Print Mid$(DB$,Edialog,240) : Wait Key : End
' MAIN DIALOG SCREENS
DBL: Data " "
' Enter your name page
Data "LA 1:"
Data "BAse 0,0; SIze SW,SH;"
Data "BOx 0,0,1,SX,SY;"
Data "LIne 0,4,10,SX;"
Data "POut 1MECX,YB1+,1ME,0,7;"
Data "LIne 0,YB1+,10,SX;"
Data "PP 2,64; PP 3,YB4+;"
Data "LI 32,YB24+,17,608; PR 48,YA4+,4ME,3; ED 4,XB16+,YA,32,32,0,0,7;"
Data "LI 32,YB8+,17,608; PR 48,YA4+,5ME,3; ED 5,XB16+,YA,32,32,0,0,7;"
Data "BU 1,SX112-,SY16-,96,16,0,0,1;[LI 0,0,20BP3*+,SX;PR 6MECXBP+,1,6ME,7;][BR0;BQ;]"
Data "KY 13,0;"
Data "RUn 0,3; EXit;"
' Problem with registration
Data "LA 2:"
Data "BAse 0,0; SIze SW,SH;"
Data "BOx 0,0,1,SX,SY;"
Data "LIne 0,4,10,SX;"
Data "POut 1MECX,YB1+,1ME,0,7;"
Data "LIne 0,YB1+,10,SX;"
Data "PP 7,40; PP 8,YB1+; PP 9,YB1+; PP 10,YB1+;"
Data "PR 152,YB16+,11ME,7;"
Data "PR XA,YB1+,12ME,7;"
Data "PR XA,YB1+,13ME,7;"
Data "PR XA,YB1+,14ME,7;"
Data "PR XA,YB1+,15ME,7;"
Data "PR XA,YB1+,16ME,7;"
Data "PR XA,YB1+,17ME,7;"
Data "PR XA,YB1+,18ME,7;"
Data "PR XA,YB1+,19ME,7;"
Data "BU 1,16,SY16-,96,16,0,0,1;[LI 0,0,20BP3*+,SX;PR 20MECXBP+,1,20ME,7;][BR0;BQ;]"
Data "KY 13,0;"
Data "BU 2,SX112-,SY16-,96,16,0,0,1;[LI 0,0,20BP3*+,SX;PR 21MECXBP+,1,21ME,7;][BR0;BQ;]"
Data "KY 27,0;"
Data "RUn 0,3; EXit;"
' Registration number
Data "LA 3:"
Data "BAse 0,0; SIze SW,SH;"
Data "BOx 0,0,1,SX,SY;"
Data "LIne 0,4,10,SX;"
Data "POut 1MECX,YB1+,1ME,0,7;"
Data "LIne 0,YB1+,10,SX;"
Data "BOx 8,YB8+,1,632,YB32+;"
Data "SVar 0,22ME 1VA!; POut 0VACX,YA8+,0VA,2,3;"
Data "PP 23,YB24+; PP 24,YB1+; PP 25,YB1+;"
Data "PP 26,YB8+; PP 27,YB1+;"
Data "PP 28,YB8+; PP 29,YB1+;"
Data "BU 1,SX112-,SY16-,96,16,0,0,1;[LI 0,0,20BP3*+,SX;PR 30MECXBP+,1,30ME,7;][BR0;BQ;]"
Data "KY 13,0;"
Data "RUn 0,3; EXit;"
' Installation
' ~~~~~~~~~~~~
Data "LA 4:"
Data "BAse 0,0; SIze SW,SH;"
Data "BOx 0,0,1,SX,SY;"
Data "LIne 0,4,10,SX;"
Data "POut 31MECX,YB1+,31ME,0,7;"
Data "LIne 0,YB1+,10,SX;"
Data "PP 32,YB24+;"
Data "PP 33,YB16+; PP 34,YB1+;"
Data "PP 35,YB8+; PP 36,YB1+;"
Data "POut 37MECX,YB24+,37ME,0,7;"
Data "BU 1,SX112-,SY16-,96,16,0,0,1;[LI 0,0,20BP3*+,SX;PR 6MECXBP+,1,6ME,7;][BR0;BQ;]"
Data "KY 13,0;"
Data "RUn 0,3; EXit;"
' Installation selection
Data "LA 5:"
Data "BAse 0,0; SIze SW,SH;"
Data "BOx 0,0,1,SX,SY;"
Data "LIne 0,4,10,SX;"
Data "POut 38MECX,YB1+,38ME,0,7;"
Data "LIne 0,YB1+,10,SX;"
Data "BOx 8,YB4+,1,632,YB24+;"
Data "SV 0,109ME 0VA!; POut 0VACX,YA6+,0VA,2,3;"
Data "PP 39,YB12+;"
Data "BI 4,124,YB4+,40;"
Data "BI 5,XA,YB,41;"
Data "BI 6,XA,YB,42;"
Data "BI 7,XA,YB,43;"
Data "BI 8,XA,YB,44;"
Data "BI 9,XA,YB,45;"
Data "PR XA,YB,'--------------------------------------------------',3;"
Data "PR XA,YB,46ME,7; SV 1,YA; PR 0VA72+,1VA,106ME,7;"
Data "PR 124,YB2+,2VA,7; PR 0VA,YA,3VA#,7; PR 0VA72+,YA,106ME,7;"
Data "PR 124,YB,'--------------------------------------------------',3;"
Data "BU 1,16,SY16-,96,12,0,0,1;[LI 0,0,20BP3*+,SX;PR 47MECXBP+,1,47ME,7;][BR0;]"
Data "KY 13,0;"
Data "BU 2,SX112-,SY16-,96,12,0,0,1;[LI 0,0,20BP3*+,SX;PR 21MECXBP+,1,21ME,7;][BR0;]"
Data "KY 27,0;"
Data "BU 3,SX2/128-,SY16-,256,12,0,0,1;[LI 0,0,20BP3*+,SX;PR 107MECXBP+,1,107ME,7;][BR0;]"
Data "EXit;"
' Installation complete
Data "LA 6:"
Data "BAse 0,0; SIze SW,SH;"
Data "BOx 0,0,1,SX,SY;"
Data "LIne 0,4,10,SX;"
Data "POut 54MECX,YB1+,54ME,0,7;"
Data "LIne 0,YB1+,10,SX;"
Data "PP 55,YB16+;"
Data "PP 56,YB8+; PP 57,YB1+;"
Data "BOx 8,YB8+,1,632,YB32+;"
Data "POut 0VACX,YA8+,0VA,0,3;"
Data "PP 58,YB24+; PP 59,YB1+; PP 60,YB1+;"
Data "PP 61,YB8+;"
Data "BU 1,SX112-,SY16-,96,16,0,0,1;[LI 0,0,20BP3*+,SX;PR 48MECXBP+,1,48ME,7;][BR0;BQ;]"
Data "KY 13,0;"
Data "RUn 0,3; EXit;"
' Keyboard langage
Data "LA 7:"
Data "BAse 0,0; SIze SW,SH;"
Data "BOx 0,0,1,SX,SY;"
Data "LIne 0,4,10,SX;"
Data "POut 38MECX,YB1+,38ME,0,7;"
Data "LIne 0,YB1+,10,SX;"
Data "SV 2,120;"
Data "BOx 232,2VA 1VA4*- 4-,1,408,2VA 1VA4* + 4+;"
Data "AList 1,XA8+,YA4+,20,1VA,0VA,0,0,0,3;[BQ;]"
Data "PP 90,YA20-;"
Data "BU 2,SX112-,SY16-,96,16,0,0,1;[LI 0,0,20BP3*+,SX;PR 21MECXBP+,1,21ME,7;][BR0;BQ;]"
Data "KY 27,0;"
Data "RUn 0,3; EXit;"
' Aborted
Data "LA 8:"
Data "BAse 0,0; SIze SW,SH;"
Data "BOx 0,0,1,SX,SY;"
Data "LIne 0,4,10,SX;"
Data "POut 101MECX,YB1+,101ME,0,7;"
Data "LIne 0,YB1+,10,SX;"
Data "PP 102,40; PP 103,YB1+; PP 104,YB8+;"
Data "PR 152,YB16+,11ME,7;"
Data "PR XA,YB1+,12ME,7;"
Data "PR XA,YB1+,13ME,7;"
Data "PR XA,YB1+,14ME,7;"
Data "PR XA,YB1+,15ME,7;"
Data "PR XA,YB1+,16ME,7;"
Data "PR XA,YB1+,17ME,7;"
Data "PR XA,YB1+,18ME,7;"
Data "PR XA,YB1+,19ME,7;"
Data "BU 1,SX112-,SY16-,96,16,0,0,1;[LI 0,0,20BP3*+,SX;PR 21MECXBP+,1,21ME,7;][BR0;BQ;]"
Data "KY 27,0;"
Data "RUn 0,3; EXit;"
' Installing AMOSPRO!
Data "LA 9:"
Data "BAse 0,0; SIze SW,SH;"
Data "BOx 0,0,1,SX,SY;"
Data "LIne 0,4,10,SX;"
Data "SV 0,72ME 0VA !; POut 0VACX,YB1+,0VA,0,7;"
Data "LIne 0,YB1+,10,SX;"
Data "SV4,48; BOx 8,48,1,SX8-,112;"
Data "SV0,8;SV1,132;SV2,SX16-;SV3,24;BOx 0VA,1VA,1,0VA2VA+,1VA3VA+;"
Data "PR XB40-,1VA9-,'100 %',3; PR 0VA,1VA9-,'0 %',3;"
Data "BU 1,SX112-,SY16-,96,16,0,0,1;[LI 0,0,20BP3*+,SX;PR 21MECXBP+,1,21ME,7;][BR0;BQ;]"
Data "KY 27,0;"
Data "EXit;"
' Installation
Data "LA 10:"
Data "BAse 0,0; SIze SW,SH;"
Data "BOx 0,0,1,SX,SY;"
Data "LIne 0,4,10,SX;"
Data "POut 31MECX,YB1+,31ME,0,7;"
Data "LIne 0,YB1+,10,SX;"
Data "BO 8,YB40+,1,632,YB104+;"
Data "POut 80MECX,YA28+,80ME,2,3;"
Data "EXit;"
' User instructions...
Data "UI PP,2;"
Data "[PR P1MECX,P2,P1ME,3;]"
Data "UI BI,4;["
Data "PR P2 32+,P3 2+,P4ME,3; SV 0,P2 272+; PR 0VA,YA,P1VA#,3; PR XA72+,YA,76ME,3;"
Data "BU P1,P2,P3,24,12,6P1+VA,0,1;[UN 0,0,15BP+;][SV ZN 6+,BP;]"
Data "XY P2,P3,P2,P3 12+;]"
Data "UI KK,3;["
Data "IF P1 VA 1=; [BU P1,P2,P3,SX P2-P2-,10,0,0,1;[LI 0,0,20BP3*+,SX;PR ZN78+MECXBP+,1,ZN78+ME,7;][BR0;BQ;] ]"
Data "]"
Data ""
' QUICK RUN DIALOG BOXES
ALT: Data " "
' One button, CANCEL
Data "SIze 1VA TW 160+ SW MIn,72;"
Data "BAse SWidth SX -2/,SHeight SY- 2/;"
Data "SAve 1;"
Data "BOx 0,0,1,SX,SY;"
Data "LIne 0,4,10,SX;"
Data "POut 77MECX,YB1+,77ME,0,7;"
Data "LIne 0,YB1+,10,SX;"
Data "POut 1VACX,YB8+,1VA,2,3;"
Data "IF 0VA 1=;"
Data "["
Data "BU 1,SX112-,SY16-,96,16,0,0,1;[LI 0,0,20BP3*+,SX;PR 6MECXBP+,1,6ME,7;][BR0;BQ;]"
Data "KY 27,0;"
Data "RUn 0,3;"
Data "]"
Data "IF 0VA 2=;"
Data "["
Data "BU 1,16,SY16-,96,16,0,0,1;[LI 0,0,20BP3*+,SX;PR 69MECXBP+,1,69ME,7;][BR0;BQ;]"
Data "KY 13,0;"
Data "BU 2,SX112-,SY16-,96,16,0,0,1;[LI 0,0,20BP3*+,SX;PR 78MECXBP+,1,78ME,7;][BR0;BQ;]"
Data "KY 27,0;"
Data "RUn 0,3;"
Data "]"
Data "IF 0VA 3=;"
Data "["
Data "BU 1,SX112-,SY16-,96,16,0,0,1;[LI 0,0,20BP3*+,SX;PR 78MECXBP+,1,78ME,7;][BR0;BQ;]"
Data "KY 27,0;"
Data "]"
Data "EXit;"
Data "UI PP,2;"
Data "[PR P1MECX,P2,P1ME,3;]"
Data ""
End Proc
Procedure _STRING_CLEAN[A$,L]
A$=Left$(A$,L)
If Len(A$)
For C=Len(A$) To 1 Step -1
Exit If Right$(A$,1)<>" "
A$=Left$(A$,Len(A$)-1)
Next
End If
End Proc[A$]
Procedure _FIND_DISC[D$,N$]
N$=Upper$(N$) : L=Len(N$)
On Error Goto _NO
For T=0 To 4 : Multi Wait : Next
A$=Upper$(Disc Info$(D$))
If Left$(A$,L)=N$ Then F=-1
Goto _QUIT
'
_NO: F=0 : Resume _QUIT
_QUIT:
End Proc[F]
Procedure _BELL
Bell
End Proc
Procedure _QUIT
Dialog Close
Fade 1 : Wait 16
_SCREEN_CLOSALL
Erase All
If Prg State>0 : Edit : End If
System
End Proc
Procedure _ABORTED
R=Dialog Run(1,8)
_QUIT
End Proc
Procedure _GET_DISC[ND$,N$]
Dialog Freeze 1
F=0 : QUIT=0
Do
For D=0 To 2
D$="Df"+Chr$(48+D)+":"
If Exist(D$)
Trap Dir$=D$
If Errtrap=0
Exit If Dir$=ND$,2
End If
End If
Next
If F=0
Inc F
Dialog Open 2,AL$
Vdialog(2,0)=3
Vdialog$(2,1)=Resource$(52)+" "+N$+" "+Resource$(53)
R=Dialog Run(2)
Else
QUIT=Dialog(2) : Exit If QUIT
End If
For T=0 To 25 : Multi Wait : Next
Loop
If F : Dialog Close 2 : End If
Dialog Unfreeze 1
DRV$=D$ : DRV=D
If QUIT : _ABORTED : End If
End Proc[DSK$]
Procedure _CHECK_INSTALLATION
REG$="" : USER$=""
' Ask for user name if not defined
Do
_GET_DISC[ND$(0),Resource$(91)]
' Look for user's name in AMOSPro
L=10*1024
Trap Open In 1,DRV$+"AMOSPro" : Exit If Errtrap
Trap Sload 1 To Start(BCOPY),L : Exit If Errtrap
Close
A$="dos.library"+Chr$(0)
ADCODE=Hunt(Start(BCOPY) To Start(BCOPY)+L,"dos.library")
If ADCODE=0 : Pop Proc[-1] : End If
Add ADCODE,Len(A$)
If Deek(ADCODE)
L=Deek(ADCODE) : A$=Peek$(ADCODE+2,L)
L=Deek(ADCODE+16) : B$=Peek$(ADCODE+18,L)
For C=1 To Len(A$) : REG$=REG$+Chr$(Asc(Mid$(A$,C,1)) xor $73) : Next
For C=1 To Len(B$) : USER$=USER$+Chr$(Asc(Mid$(B$,C,1)) xor $5A) : Next
Exit
Else
_GET_REG : If Param=0 : Exit : End If
End If
' Message d'erreur
_BELL : R=Dialog Run(1,2)
If R=2 : _QUIT : End If
Loop
' Demande le nom
If USER$=""
Do
R=Dialog Run(1,1)
A$=Rdialog$(1,4) : _STRING_CLEAN[A$,32] : NAMEF$=Param$
B$=Rdialog$(1,5) : _STRING_CLEAN[B$,32] : NAMES$=Param$
If(Len(NAMEF$)<2) or(Len(NAMES$)<2)
_BELL : A=Dialog Box(AL$,1,Resource$(105))
Else
Exit
End If
Loop
' Create Boot-up user's name + Reg number
USER$=NAMEF$+" "+NAMES$
If Len(USER$)>32
USER$=Upper$(Left$(NAMEF$,1))+". "+NAMES$
If Len(USER$)>32
USER$=Left$(USER$,3)+Left$(NAMES$,28)
End If
End If
A$=Upper$(Left$(NAMES$,3)) : A$=A$+String$("-",3-Len(A$))
REG$=A$+REG$
' Calculate the codes to poke in AMOSPro
CODE0$=Chr$(0)+Chr$(Len(REG$))
For L=1 To Len(REG$)
CODE0$=CODE0$+Chr$((Asc(Mid$(REG$,L,1)) xor $73))
Next
CODE1$=Chr$(0)+Chr$(Len(USER$)) : CODE2$=CODE1$
For L=1 To Len(USER$)
CODE1$=CODE1$+Chr$((Asc(Mid$(USER$,L,1)) xor $A5))
CODE2$=CODE2$+Chr$((Asc(Mid$(USER$,L,1)) xor $5A))
CHK=CHK+Asc(Mid$(USER$,L,1)) and $FF
Next
' Poke in AMOSPro
Do
R=Dialog Run(1,10)
_GET_DISC[ND$(0),Resource$(91)]
Do
' Noms / Registration dans AMOSPro
Trap Open In 1,DRV$+"AMOSPro" : If Errtrap : E=2 : Exit : End If
Trap A$=Input$(1,1024*4) : If Errtrap : E=2 : Exit : End If
Close
B$="dos.library"+Chr$(0) : P=Instr(A$,B$)-1 : If P<0 : E=4 : Exit : End If
PP=P+Leek(Varptr(A$)+P-4) : P=P+Len(B$)
A$=""
Trap Append 1,DRV$+"AMOSPro" : If Errtrap : E=1 : Exit : End If
Trap Pof(1)=P : If Errtrap : E=4 : Exit : End If
'RV
Trap Print #1,CODE0$; : If Errtrap : E=1 : Exit : End If
Trap Pof(1)=P+16 : If Errtrap : E=2 : Exit : End If
Trap Print #1,CODE1$; : If Errtrap : E=3 : Exit : End If
Trap Pof(1)=PP : If Errtrap : E=2 : Exit : End If
Trap Print #1,CODE2$; : If Errtrap : E=3 : Exit : End If
Close 1
Wait 100
' Termine!
Exit 2
Loop
' Gestion des erreurs
Close : _BELL
R=Dialog Box(AL$,2,Resource$(96+E))
If R=2
R=Dialog Run(1,2)
If R=2 : _QUIT : End If
End If
Loop
End If
End Proc
Procedure _GET_REG
Wait 50
_TRACK_OPEN[0,DRV]
TRSIZE=Areg(0)
Erase 13 : Reserve As Chip Work 13,TRSIZE
Erase 14 : Reserve As Chip Work 14,TRSIZE
' _TRACK_BUSY[DRV,-1]
_TRACK_MOTOR[0,1]
_TRACK_READ[0,0,Start(13)] : E1=Param
_TRACK_READ[0,80,Start(14)] : E2=Param
_TRACK_MOTOR[0,0]
' _TRACK_BUSY[DRV,0]
_TRACK_CLOSE[0]
Wait 50
If E1+E2 : Pop Proc[-1] : End If
AN=Start(14)+108*4 : L=Peek(AN)
For C=1 To 12
CC=Peek(AN+L+C) : Exit If CC=0
A$=A$+Chr$(CC)
Next
NUMBER=Val(A$) : If NUMBER<10000 Then Goto _ERR
N=Leek(Start(13)+$180) : If N<>NUMBER Then Goto _ERR
FLAG=0 : Goto _END
_ERR: FLAG=-1 : Goto _END
_END: Erase 13 : Erase 14
REG$=Str$(NUMBER)-" "
End Proc[FLAG]
Procedure _TRACK_OPEN[S,D]
Dreg(0)=0 : Dreg(1)=S : Dreg(2)=D : Call DBANK
End Proc[Dreg(0)]
Procedure _TRACK_MOTOR[S,D]
Dreg(0)=2 : Dreg(1)=S : Dreg(2)=D : Call DBANK
End Proc[Dreg(0)]
Procedure _TRACK_READ[S,T,A]
Dreg(0)=4 : Dreg(1)=S : Dreg(2)=T : Areg(1)=A : Call DBANK
End Proc[Dreg(0)]
Procedure _TRACK_WRITE[S,T,A]
Dreg(0)=5 : Dreg(1)=S : Dreg(2)=T : Areg(1)=A : Call DBANK
End Proc[Dreg(0)]
Procedure _TRACK_CLOSE[S]
Dreg(0)=1 : Dreg(1)=S : Call DBANK
End Proc
Procedure _TRACK_CRUNCH[N,S,D]
Dreg(0)=6 : Dreg(1)=N : Areg(1)=S : Areg(2)=D : Call DBANK
End Proc
Procedure _TRACK_UNCRUNCH[N,D]
Dreg(0)=7 : Dreg(1)=N : Areg(1)=D : Call DBANK
End Proc
Procedure _TRACK_ERASE
Dreg(0)=8 : Call DBANK
End Proc
Procedure _TRACK_BUSY[T,F]
Dreg(0)=10
Dreg(1)=F : A$="Df"+Mid$(Str$(T),2,1)+":"+Chr$(0) : Areg(1)=Varptr(A$)
Call DBANK
End Proc[Dreg(0)]
Procedure _CHECK_SUM[A]
Dreg(0)=3 : Areg(1)=A : Call DBANK
End Proc
Procedure _CHECK_SUM0[A]
Dreg(0)=12 : Areg(1)=A : Call DBANK
End Proc
Procedure _VERIFY[A,B,S]
Dreg(0)=9 : Areg(1)=A : Areg(2)=B : Dreg(1)=S : Call DBANK
End Proc
Procedure _WRITE_PROTECTED[S]
Dreg(0)=11 : Dreg(1)=S : Call DBANK
End Proc[Dreg(0)]
Procedure _EXPLOSION
Dim _OFFSETS(13,1)
On Error Goto _MEM
Clear Key : Erase All
Load "AMOSPro_System:Install_Data/Explosion.Abs"
PBOB_INIT[9,16,200,200] : If Param : Error 32 : End If
For B=1 To 49
PBOB[B,B] : If Param : Error 32 : End If
Next
PBOB_END
For LOP=1 To 6
Unpack 9+LOP To LOP
Screen Hide LOP
Next LOP
Screen 6
Palette $0,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF
For LOP=0 To 13
Read _OFFSETS(LOP,0)
Read _OFFSETS(LOP,1)
Next LOP
SCR_OPEN[0,1,320,200,16,Lowres]
Palette $0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0
Amos To Front
Plot 219,144,1
Plot 219+1,144,1
Plot 219-1,144,1
Plot 219,144+1,1
Plot 219,144-1,1
' Get Palette 1
Flash 1,"(000,40)(112,5)(224,5)(446,5)(668,5)(88A,5)(AAC,5)(CCE,5)(FFF,12)(CCE,5)(AAC,5)(88A,5)(668,5)(446,5)(224,5)(112,5)"
Double Buffer
Wait 130
Repeat
Until Colour(1)=$FFF
Flash Off
If Inkey$=Chr$(27) : Error 32 : End If
FRED:
Get Palette 1
For LOP=1 To 14
Paste Bob 219-_OFFSETS(LOP-1,0),144-_OFFSETS(LOP-1,1),LOP
Get Bob LOP,0,0 To 16,1
Wait Vbl
Next LOP
For LOP=1 To 6
Screen To Front LOP
Screen Show LOP
Wait 2
Next LOP
Wait 100
Screen 6
Fade 4,$0,$FFE,$EEC,$EEA,$FDA,$EA4,$C74,$B53,$444,$555,$777,$888,$AAA,$BBB,$CCC,$EEE,$DFF,$BEE,$ADD,$9CD,$7BC,$6AB,$58A,$479,$369,$359,$259,$249,$139,$128,$17,$6
For LOP=0 To 5 : Screen Close LOP : Next LOP
Wait 40
Double Buffer
For LOP=15 To 29
Bob 1,207,143,LOP
Wait 4
Next LOP
Bob Off 1
Wait Vbl
Bob Off
Wait Vbl
Bob 1,170,147,30
Channel 1 To Bob 1
A$="Let A=30 ; P ; Move -30,5,10 ; P ; Let A=31 ; Move -30,5,10"
A$=A$+" Let A=32 ; Move -60,10,10 ; Let A=33 ; Move -100,10,10 "
Amal 1,A$
Wait Vbl
Sam Play 6,1
Amal On 1
Wait 15
Bob 5,206,124,42
Channel 5 To Bob 5
B$=" Let A=46 ; Move 10,-25,10 ; Let A=47 ; Move 20,-40,10 ; Let A=48 ; Move 30,-50,10 ; Let A=49 ; Move 30,-60,10"
Amal 5,B$
Wait Vbl
Sam Play 9,1
Amal On 5
Wait 15
Bob 2,187,154,34
Channel 2 To Bob 2
C$="Let A=34 ; Move -10,10,10 ; Let A=35 ; Move -20,25,10 ; Let A=36 ; Move -30,30,10 ; Let A=37 ; Move -30,20,10"
Amal 2,C$
Wait Vbl
Sam Play 6,1
Amal On 2
Wait 15
Bob 3,187,129,38
Channel 3 To Bob 3
D$="Let A=38 ; Move -30,-20,10 ; Let A=39 ; Move -60,-40,10 ; Let A=40 ; Move -80,-50,10 ; Let A=41 ; Move -100,-70,10"
Amal 3,D$
Wait Vbl
Sam Play 15,1
Amal On 3
Wait 15
Bob 4,206,124,42
Channel 4 To Bob 4
E$="Let A=42 ; Move -15,-20,10 ; Let A=43 ; Move -20,-40,10 ; Let A=44 ; Move -25,-60,10 ; Let A=45 ; Move -30,-80,10"
Amal 4,E$
Sam Play 15,1
Wait Vbl
Amal On 4
Wait 100
Bob 4,206,124,42
Channel 4 To Bob 4
Amal 4," Anim 1,(42,3)(43,3)(44,3)(45,3) ; Move -46,-64,20 ; "
Wait Vbl
Amal On 4
Bob 3,187,129,38
Channel 3 To Bob 3
Amal 3," Anim 1,(38,3)(39,3)(40,3)(41,3) ; Move -67,-39,20 ; "
Wait Vbl
Amal On 3
Bob 5,206,124,46
Channel 5 To Bob 5
Amal 5," Anim 1,(46,5)(47,5)(48,5)(49,5) ; Move 52,-120,20 ; "
Wait Vbl
Amal On 5
Bob 1,170,147,30
Channel 1 To Bob 1
Amal 1,"Anim 1,(30,5)(31,5)(32,5)(33,5); Move -70,18,20 ; "
Wait Vbl
Amal On 1
Wait 100
For LOP=1 To 5
Update
Wait Vbl
Put Bob LOP
Wait Vbl
Bob Off LOP
Next LOP
Erase All
Pop Proc[0]
_OFFSETS:
Data 1,1
Data 3,3
Data 5,5
Data 9,8
Data 10,10
Data 11,11
Data 19,19
Data 26,28
Data 35,38
Data 43,46
Data 53,57
Data 65,71
Data 76,76
Data 92,95
_MEM: Erase All : _SCREEN_CLOSALL : Amos To Front : Resume _ERR
_ERR:
End Proc[1]
Procedure SCR_OPEN[SCR,AUTO,X,Y,NUM,RES]
Screen Open SCR,X,Y,NUM,RES
Autoback AUTO
Flash Off
Curs Off
Hide On
Cls 0
End Proc
Procedure PBOB_INIT[BANK,NCOL,MX,MY]
Shared PB_BANK
PB_BANK=BANK
Trap Screen Open 7,MX,MY,NCOL,0 : If Errtrap : Pop Proc[1] : End If
Screen Hide
End Proc[0]
Procedure PBOB[N,D]
Shared PB_BANK
Dec N
A=Start(PB_BANK)+N*10
If Deek(A)
AB=Start(PB_BANK)+Deek(A)*2
SX=Deek(A+2)*16 : SY=Deek(A+4)
S=Screen : Screen 7
Unpack AB,0,0
Trap Get Bob D,0,0 To SX,SY : If Errtrap : Pop Proc[1] : End If
Screen S
AA=Sprite Base(D) : Loke AA+6,Leek(A+6)
End If
End Proc[0]
Procedure PBOB_END
Screen Close 7
End Proc
Procedure FAD_ALL[W]
For T=1 To W
Colour Back(Colour(0))
View
Wait Vbl
Next
End Proc
Procedure _SCREEN_CLOSALL
For S=0 To 7
Trap Screen Close S
Next
End Proc
Procedure _PANIC[E]
Amos To Front
For S=0 To 7
Trap Screen Close S
Next
Erase All
Screen Open 0,640,24,2,Hires : Palette 0,0
Curs Off : Pen 1
If E=0
Centre ">>> Not enough memory to proceed <<<"
Else
Centre ">>> Cannot load configuration files. Please check your drive <<<"
End If
Centre At(,2)+"Press any key to abort."
Fade 3,0,$FFF
Clear Key
Wait Key
System
End Proc